package com.sgcc.nfc.lock.domain.repository

import com.sgcc.nfc.lock.core.network.NetworkResult
import com.sgcc.nfc.lock.domain.model.Region

interface RegionRepository {
    suspend fun getRegionTree(): NetworkResult<List<Region>>
    suspend fun getRegionChildren(parentId: Long?): NetworkResult<List<Region>>
    suspend fun createRegion(params: CreateRegionParams): NetworkResult<Unit>
    suspend fun updateRegion(params: UpdateRegionParams): NetworkResult<Unit>
    suspend fun deleteRegion(regionId: Long): NetworkResult<Unit>

    data class CreateRegionParams(
        val regionName: String,
        val regionType: Int,
        val parentId: Long
    )

    data class UpdateRegionParams(
        val regionId: Long,
        val regionName: String,
        val regionType: Int,
        val parentId: Long
    )
}
